A programmable logic device (PLD), one type of an integrated circuit (IC) having programmable or configurable resources, may be configured to perform a wide variety of functions. The function of a PLD may be configured by loading configuration data into the PLD from an external source. A particular function may be implemented by programming the configurable logic and routing resources of the PLD with configuration data developed and generated for that function.
A PLD supports at least one configuration protocol used to load configuration data into the PLD, and some PLDs may support multiple configuration protocols. A PLD may have a configuration port with dedicated pins for each configuration protocol supported by the PLD. Alternatively, pins may be shared between configuration protocols. Some pins used during configuration may also be used for user-programmed functions after configuration. Certain configuration protocols may provide additional capabilities such as reading the current configuration from the PLD or reconfiguring only a portion of the PLD. A PLD providing multiple configuration protocols provides flexibility by allowing a user to select a configuration protocol according to user requirements.
In many systems one or more PLDs are connected to other devices on a printed circuit board. When the board malfunctions, boundary-scan capabilities of the devices may be used to identify the source of the problem. Part of testing a PLD may involve reconfiguring the device or reading back data from the device. However, reconfiguring the PLD via the normal configuration channel may not be feasible during problem diagnosis. Furthermore, the PLD may have defective boundary-scan logic or the PLD may not have boundary-scan capabilities.
The present invention may address one or more of the above issues.